//package com.kalvan.web.servlet.interceptor;
//
//import com.kalvan.admin.system.service.AuthService;
//import com.kalvan.commons.vo.system.UserVO;
//import com.kalvan.web.servlet.annotation.TokenCheck;
//import com.kalvan.web.servlet.response.Code;
//import com.kalvan.web.servlet.response.R;
//import com.kalvan.web.utils.TokenUtils;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.lang3.StringUtils;
//import org.springframework.stereotype.Component;
//import org.springframework.web.method.HandlerMethod;
//import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
//
//import javax.annotation.Resource;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//
///**
// * 检查用户登录状态
// *
// * @author chenliang
// */
//@Component
//@Slf4j
//public class TokenInterceptor extends HandlerInterceptorAdapter {
//
//    @Resource
//    AuthService authService;
//
//    @Override
//    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//        TokenCheck tokenCheck = null;
//        String token = TokenUtils.getToken(request);
//        if (handler instanceof HandlerMethod) {
//            tokenCheck = ((HandlerMethod) handler).getMethod().getAnnotation(TokenCheck.class);
//        }
//        //tokenCheck没标识注解默认为需要检查
//        if ((tokenCheck == null || tokenCheck.required()) && StringUtils.isBlank(token)) {
//            R.returnResponse(response, R.build(Code.CODE_NO_LOGIN));
//            return false;
//        }
//        //查看会话token是否失效
//        if (StringUtils.isNotBlank(token)) {
//            UserVO userVO = authService.checkToken(token);
//            if (userVO == null) {
//                R.returnResponse(response, R.build(Code.CODE_NO_LOGIN));
//                return false;
//            }
//            //扩展当前登录用户
//            CallInterfaceInterceptor.setUserName(userVO.getUsername());
//            CallInterfaceInterceptor.setUserInfo(userVO);
//        }
//        return super.preHandle(request, response, handler);
//    }
//}
